﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using System.Xml;
namespace GameVLTK
{
    public class KillerManager : VisibleGameEntity
    {
        private List<Killer> _Killers;

        public List<Killer> Killers
        {
          get { return _Killers; }
          set { _Killers = value; }
        }

       
        public KillerManager(ContentManager content, XmlDocument doc)
        {
            this.Killers = new List<Killer>();

            XmlNode nDS_Killers = doc.SelectSingleNode("//DS_KILLERS");

            //Lấy đường dẫn chứa các ảnh 
            String pathImages = nDS_Killers.Attributes["Prefix"].Value;

            //Trả về danh sách các Killer
            XmlNodeList nlKillers = doc.SelectNodes("//KILLER");

          
            for (int i = 0; i < nlKillers.Count; i++)
            {
                XmlNode nKiller = nlKillers[i];

                //Tên prefix của Killer
                string prefix = nKiller.Attributes["Prefix"].Value;

                //Tạo độ của Killer
                int X = int.Parse(nKiller.Attributes["X"].Value);
                int Y = int.Parse(nKiller.Attributes["Y"].Value);

                //Khởi tạo Killer
                Killer killer = new Killer(content, Global.PATH_IMAGES +  pathImages + prefix,
                                              nKiller, new Vector2(X, Y));

                //Lấy tên đối tượng
                killer.Name = nKiller.Attributes["Name"].Value;


                //Add Killer
                this.Killers.Add(killer);

                //Add vào danh sách các đối tượng trên ForeGround
                Map.ForeGround.Add(killer);
              
            }

        }

        public override void Update(GameTime gameTime)
        {
          
            GartherInput(Mouse.GetState());

            for (int i = 0; i < this.Killers.Count; i++)
                this.Killers[i].Update(gameTime);
        }

        /// <summary>
        /// Kiểm tra input đầu vào đối với đối tượng Killer
        /// </summary>
        public void GartherInput(MouseState mouseState)
        {
            for (int i = 0; i < this.Killers.Count; i++)
                if (this.Killers[i].IsClicked(mouseState))
                {
                    Global.BroadCastEvents(Global.EVENTS.GM_KILLER_CLICKED,
                                                this.Killers[i], null, null);
                }
        }


        public override void Draw(GameTime gameTime, SpriteBatch spriteBatch)
        {
            for (int i = 0; i < this.Killers.Count; i++)
                this.Killers[i].Draw(gameTime, spriteBatch);
        }
    }
}
